package work.mediway.mdm.biz.dto.patient;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;

import java.util.List;

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 患者主索引对应表
 *
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2020/12/16
 */
@NoArgsConstructor
@ApiModel(value = "患者主信息表")
@Data
public class PatientStorageDTO {

    private RequestBean request;

    @NoArgsConstructor
    @Data
    public static class RequestBean {
        private List<DataBean> data;

        @NoArgsConstructor
        @Data
        public static class DataBean {

            @SerializedName("REPAT_PatientID")
            @JsonProperty("REPAT_PatientID")
            private String rEPAT_PatientID;

            @SerializedName("BusinessFieldCode")
            @JsonProperty("BusinessFieldCode")
            private String businessFieldCode;

            @SerializedName("REPAT_HosPatientID")
            @JsonProperty("REPAT_HosPatientID")
            private String rEPAT_HosPatientID;

            @SerializedName("REPAT_LinkID")
            @JsonProperty("REPAT_LinkID")
            private String rEPAT_LinkID;

            @SerializedName("deg_groupid")
            @JsonProperty("deg_groupid")
            private String deg_groupid;

            @SerializedName("PAPatient")
            @JsonProperty("PAPatient")
            private PAPatientBean paPatient;

            @NoArgsConstructor
            @Data
            public static class PAPatientBean{

                @SerializedName("PAPAT_PatientID")
                @JsonProperty("PAPAT_PatientID")
                private String pAPAT_PatientID;

                @SerializedName("PAPAT_DE_SexCode")
                @JsonProperty("PAPAT_DE_SexCode")
                private String pAPAT_DE_SexCode;

                @SerializedName("PAPAT_RelationAddressDesc")
                @JsonProperty("PAPAT_RelationAddressDesc")
                private String pAPAT_RelationAddressDesc;

                @SerializedName("PAPAT_HealthCardID")
                @JsonProperty("PAPAT_HealthCardID")
                private String pAPAT_HealthCardID;

                @SerializedName("PAPAT_UpdateDate")
                @JsonProperty("PAPAT_UpdateDate")
                private String pAPAT_UpdateDate;

                @SerializedName("PAPAT_Telephone")
                @JsonProperty("PAPAT_Telephone")
                private String pAPAT_Telephone;

                @SerializedName("PAPAT_RelationCounty")
                @JsonProperty("PAPAT_RelationCounty")
                private String pAPAT_RelationCounty;

                @SerializedName("PAPAT_RelationHouseNum")
                @JsonProperty("PAPAT_RelationHouseNum")

                private String pAPAT_RelationHouseNum;

                @SerializedName("PAPAT_RelationCode")
                @JsonProperty("PAPAT_RelationCode")
                private String pAPAT_RelationCode;

                @SerializedName("PAPAT_RelationCity")
                @JsonProperty("PAPAT_RelationCity")
                private String pAPAT_RelationCity;

                @SerializedName("PAPAT_DE_DeceasedDate")
                @JsonProperty("PAPAT_DE_DeceasedDate")
                private String pAPAT_DE_DeceasedDate;

                @SerializedName("PAPAT_WorkPlaceTelNum")
                @JsonProperty("PAPAT_WorkPlaceTelNum")
                private String pAPAT_WorkPlaceTelNum;

                @SerializedName("PAPAT_RelationCountryside")
                @JsonProperty("PAPAT_RelationCountryside")
                private String pAPAT_RelationCountryside;

                @SerializedName("PAPAT_DE_MaritalStatusCode")
                @JsonProperty("PAPAT_DE_MaritalStatusCode")
                private String pAPAT_DE_MaritalStatusCode;

                @SerializedName("PAPAT_UpdateUserCode")
                @JsonProperty("PAPAT_UpdateUserCode")
                private String pAPAT_UpdateUserCode;

                @SerializedName("PAPAT_RelationVillage")
                @JsonProperty("PAPAT_RelationVillage")
                private String pAPAT_RelationVillage;

                @SerializedName("PAPAT_PatientPositionCode")
                @JsonProperty("PAPAT_PatientPositionCode")
                private String pAPAT_PatientPositionCode;

                @SerializedName("PAPAT_DE_Name")
                @JsonProperty("PAPAT_DE_Name")
                private String pAPAT_DE_Name;

                @SerializedName("PAPAT_RelationPostalCode")
                @JsonProperty("PAPAT_RelationPostalCode")
                private String pAPAT_RelationPostalCode;

                @SerializedName("PAPAT_DE_CountryCode")
                @JsonProperty("PAPAT_DE_CountryCode")
                private String pAPAT_DE_CountryCode;

                @SerializedName("PAPAT_OccupationCode")
                @JsonProperty("PAPAT_OccupationCode")
                private String pAPAT_OccupationCode;

                @SerializedName("PAPAT_DocumentNO")
                @JsonProperty("PAPAT_DocumentNO")
                private String pAPAT_DocumentNO;

                @SerializedName("PAPAT_RelationProvince")
                @JsonProperty("PAPAT_RelationProvince")
                private String pAPAT_RelationProvince;

                @SerializedName("PAPAT_Remarks")
                @JsonProperty("PAPAT_Remarks")
                private String pAPAT_Remarks;

                @SerializedName("PAPAT_RelationName")
                @JsonProperty("PAPAT_RelationName")
                private String pAPAT_RelationName;

                @SerializedName("PAPAT_RelationPhone")
                @JsonProperty("PAPAT_RelationPhone")
                private String pAPAT_RelationPhone;

                @SerializedName("PAPAT_UpdateTime")
                @JsonProperty("PAPAT_UpdateTime")
                private String pAPAT_UpdateTime;

                @SerializedName("PAPAT_DE_NationCode")
                @JsonProperty("PAPAT_DE_NationCode")
                private String pAPAT_DE_NationCode;

                @SerializedName("PAPAT_WorkPlaceName")
                @JsonProperty("PAPAT_WorkPlaceName")
                private String pAPAT_WorkPlaceName;

                @SerializedName("PAPAT_DE_Dob")
                @JsonProperty("PAPAT_DE_Dob")
                private String pAPAT_DE_Dob;

                @SerializedName("PAPAT_MotherID")
                @JsonProperty("PAPAT_MotherID")
                private String pAPAT_MotherID;

                @SerializedName("PAPAT_LinkPatientID")
                @JsonProperty("PAPAT_LinkPatientID")
                private String pAPAT_LinkPatientID;

                @SerializedName("PAPAT_DE_DeceasedTime")
                @JsonProperty("PAPAT_DE_DeceasedTime")
                private String pAPAT_DE_DeceasedTime;
            }

            @SerializedName("PATRelationList")
            @JsonProperty("PATRelationList")
            private List<PATRelationListBean> pATRelationList;

            @SerializedName("PA_Address")
            @JsonProperty("PA_Address")
            private List<PAAddressBean> pA_Address;

            @SerializedName("PA_Identifier")
            @JsonProperty("PA_Identifier")
            private List<PAIdentifierBean> pA_Identifier;

            @NoArgsConstructor
            @Data
            public static class PATRelationListBean {
                @SerializedName("PATRelation")
                @JsonProperty("PATRelation")
                private List<PATRelationBean> pATRelation;

                @NoArgsConstructor
                @Data
                public static class PATRelationBean {
                    @SerializedName("PATRelationPhone")
                    @JsonProperty("PATRelationPhone")
                    private String pATRelationPhone;

                    @SerializedName("PATRelationDesc")
                    @JsonProperty("PATRelationDesc")
                    private String pATRelationDesc;

                    @SerializedName("PATRelationAddressList")
                    @JsonProperty("PATRelationAddressList")
                    private List<PATRelationAddressListBean> pATRelationAddressList;

                    @SerializedName("PATRelationName")
                    @JsonProperty("PATRelationName")
                    private String pATRelationName;

                    @SerializedName("PATRelationCode")
                    @JsonProperty("PATRelationCode")
                    private String pATRelationCode;

                    @NoArgsConstructor
                    @Data
                    public static class PATRelationAddressListBean {
                        @SerializedName("PATRelationAddress")
                        @JsonProperty("PATRelationAddress")
                        private List<PATRelationAddressBean> pATRelationAddress;

                        @NoArgsConstructor
                        @Data
                        public static class PATRelationAddressBean {
                            @SerializedName("PATRelationAddressDesc")
                            @JsonProperty("PATRelationAddressDesc")
                            private String pATRelationAddressDesc;
                        }
                    }
                }
            }

            @NoArgsConstructor
            @Data
            public static class PAAddressBean {

                @SerializedName("PAPATAD_UpdateDate")
                @JsonProperty("PAPATAD_UpdateDate")
                private String pAPATAD_UpdateDate;

                @SerializedName("PAPATAD_PatientID")
                @JsonProperty("PAPATAD_PatientID")
                private String pAPATAD_PatientID;

                @SerializedName("PAPATAD_Village")
                @JsonProperty("PAPATAD_Village")
                private String pAPATAD_Village;

                @SerializedName("PAPATAD_CountryCode")
                @JsonProperty("PAPATAD_CountryCode")
                private String pAPATAD_CountryCode;

                @SerializedName("PAPATAD_UpdateTime")
                @JsonProperty("PAPATAD_UpdateTime")
                private String pAPATAD_UpdateTime;

                @SerializedName("PAPATAD_Town")
                @JsonProperty("PAPATAD_Town")
                private String pAPATAD_Town;

                @SerializedName("PAPATAD_CountyCode")
                @JsonProperty("PAPATAD_CountyCode")
                private String pAPATAD_CountyCode;

                @SerializedName("PAPATAD_TypeCode")
                @JsonProperty("PAPATAD_TypeCode")
                private String pAPATAD_TypeCode;

                @SerializedName("PAPATAD_ProvinceCode")
                @JsonProperty("PAPATAD_ProvinceCode")
                private String pAPATAD_ProvinceCode;

                @SerializedName("PAPATAD_UpdateUserCode")
                @JsonProperty("PAPATAD_UpdateUserCode")
                private String pAPATAD_UpdateUserCode;

                @SerializedName("PAPATAD_CityCode")
                @JsonProperty("PAPATAD_CityCode")
                private String pAPATAD_CityCode;

                @SerializedName("PAPATAD_HouseNo")
                @JsonProperty("PAPATAD_HouseNo")
                private String pAPATAD_HouseNo;

                @SerializedName("PAPATAD_Zip")
                @JsonProperty("PAPATAD_Zip")
                private String pAPATAD_Zip;

                @SerializedName("PAPATAD_Desc")
                @JsonProperty("PAPATAD_Desc")
                private String pAPATAD_Desc;
            }

            @NoArgsConstructor
            @Data
            public static class PAIdentifierBean {

                @SerializedName("PAPATID_PatientID")
                @JsonProperty("PAPATID_PatientID")
                private String pAPATID_PatientID;

                @SerializedName("PAPATID_PhotoURL")
                @JsonProperty("PAPATID_PhotoURL")
                private String pAPATID_PhotoURL;

                @SerializedName("PAPATID_UpdateTime")
                @JsonProperty("PAPATID_UpdateTime")
                private String pAPATID_UpdateTime;

                @SerializedName("PAPATID_No")
                @JsonProperty("PAPATID_No")
                private String pAPATID_No;

                @SerializedName("PAPATID_Photo")
                @JsonProperty("PAPATID_Photo")
                private String pAPATID_Photo;

                @SerializedName("PAPATID_UpdateDate")
                @JsonProperty("PAPATID_UpdateDate")
                private String pAPATID_UpdateDate;

                @SerializedName("PAPATID_TypeCode")
                @JsonProperty("PAPATID_TypeCode")
                private String pAPATID_TypeCode;

                @SerializedName("PAPATID_UpdateUserCode")
                @JsonProperty("PAPATID_UpdateUserCode")
                private String pAPATID_UpdateUserCode;
            }
        }
    }
}